/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.pnp.despachadores;
import java.sql.*;
import java.util.*;
import oracle.jdbc.*;
import pe.gob.pnp.actions.*;
import pe.gob.pnp.factories.*;

/**
 *
 * @author Administrador
 */
public class TipoMovimientoDespachador {

public static List<TipoMovimiento> obtenerTipoMovimiento() throws SQLException{
        List<TipoMovimiento> lstTipoMovimiento=new ArrayList<TipoMovimiento>();
        Connection conn=null;
        try{
            conn=ConnectionPool.obtenerConexion();
            String sql="{call SP_OBTENER_TIPO_MOVIMIENTO(?)}";
            CallableStatement cs=conn.prepareCall(sql);
            cs.registerOutParameter(1, OracleTypes.CURSOR);
            cs.execute();
            ResultSet rs=(ResultSet)cs.getObject(1);
            while(rs.next()){
                TipoMovimiento tipomovimiento=new TipoMovimiento();
                tipomovimiento.setNtimoIdentificador(rs.getInt("NTIMO_IDENTIFICADOR"));
                tipomovimiento.setCtimoDescripcion(rs.getString("CTIMO_DESCRIPCION"));
                tipomovimiento.setDtimoFechaCreacion(rs.getDate("DTIMO_FECHACREACION"));
                //System.out.print(""+tipomovimiento.getDtimoFechaCreacion());
                tipomovimiento.setBtimpEliminado(rs.getInt("BTIMO_ELIMINADO"));
                lstTipoMovimiento.add(tipomovimiento);
            }
        }finally{
            ConnectionPool.liberarConexion(conn);
        }
        return lstTipoMovimiento;
    }

    public static void agregarTipoMovimiento(TipoMovimiento tipomovimiento)throws SQLException
    {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_AGREGAR_TIPO_MOVIMIENTO(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, tipomovimiento.getCtimoDescripcion());
            cs.execute();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

    public static void modificarTipoMovimiento(TipoMovimiento tipomovimiento)throws SQLException
    {
        Connection conn = null;
        try{
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_MODIFICAR_TIPO_MOVIMIENTO(?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, tipomovimiento.getCtimoDescripcion());
            cs.setInt(2, tipomovimiento.getNtimoIdentificador());
            cs.execute();
        }finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

    public static void eliminarTipoMovimiento(int ntimoIdentificador)throws SQLException
    {
        Connection conn = null;
        try{
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_ELIMINAR_TIPO_MOVIMIENTO(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setInt(1, ntimoIdentificador);
            cs.execute();
        }finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

}
